home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 1996 March / Amiga-CD 1996 #3.iso / pd-software / mui_3.1 / developer / oberon / examples / classface.mod < prev    next >
Text File  |  1996-01-19  |  3KB  |  69 lines

  1. (*(***********************************************************************
  2.  
  3. :Module.      Classface.mod
  4. :Author.      Albert Weinert  [awn]
  5. :Copyright.   Albert Weinert
  6. :Copyright.   permission granted for inclusion into AmigaOberon library
  7. :Contents.    Interface zur Classface Programmierung mit Amiga Oberon.
  8. :Imports.     needs `Classface.o', assemble Classface.asm therefore
  9. :History.     0.0   [awn] 13-Jun-1993 : Erstellt
  10. :History.     0.1   [awn] 16-Jun-1993 : Makro-Umsetzungen und die ProcDefinition
  11. :History.           mit Utility.InitHook() erstellt, bzw. definiert.
  12. :History.     0.2   [hG]  06 Jul 1993 : an Oberon üblichen Stil angepasst.
  13. :Histroy.     1.0   [hG] renamed to Classface, some optical clean up
  14. :Histroy.     40.15 [hG] bumped version/revision
  15. :Version.     $VER: Classface.mod 40.15 (28.12.93)
  16.  
  17. ***********************************************************************)*)
  18.  
  19. MODULE Classface;
  20.  
  21. (* $StackChk- $NilChk- $ReturnChk- $ClearVars- *)
  22. (* $JOIN Classface.o *)
  23.  
  24. IMPORT
  25.   e * := Exec,
  26.   I * := Intuition,
  27.   SYSTEM,
  28.   u * := Utility;
  29.  
  30. PROCEDURE InstData*(cl{8}: I.IClassPtr; o{9}: I.ObjectPtr): e.APTR;
  31. BEGIN
  32.   RETURN  (SYSTEM.VAL(LONGINT,o)+LONG(cl.instOffset));
  33. END InstData;
  34.  
  35. PROCEDURE SizeOfInstance*(cl{8} :I.IClassPtr): LONGINT;
  36. BEGIN
  37.   RETURN cl.instOffset+cl.instSize+SIZE(I.Object);
  38. END SizeOfInstance;
  39.  
  40. PROCEDURE OClass*(o{8} :I.ObjectPtr): I.IClassPtr;
  41. BEGIN (* $RangeChk- *)
  42.   o := SYSTEM.VAL(I.ObjectPtr,SYSTEM.VAL(LONGINT,o)-SIZE(I.Object));
  43.   RETURN o.class; (* $RangeChk= *)
  44. END OClass;
  45.  
  46. PROCEDURE CoerceMethodA  * {"_a_CoerceMethodA"} (cl{8}     : I.IClassPtr;
  47.                                                  obj{10}   : I.ObjectPtr;
  48.                                                  msg{9}    : I.Msg);
  49. PROCEDURE CoerceMethod   * {"_a_CoerceMethodA"} (cl{8}     : I.IClassPtr;
  50.                                                  obj{10}   : I.ObjectPtr;
  51.                                                  msg{9}..  : u.Tag);
  52. PROCEDURE DoMethodA      * {"_a_DoMethodA"}     (obj{10}   : I.ObjectPtr;
  53.                                                  msg{9}    : I.Msg): e.APTR;
  54. PROCEDURE DoMethod       * {"_a_DoMethodA"}     (obj{10}   : I.ObjectPtr;
  55.                                                  msg{9}..  : u.Tag): e.APTR;
  56. PROCEDURE DoSuperMethodA * {"_a_DoSuperMethodA"}(cl{8}     : I.IClassPtr;
  57.                                                  obj{10}   : I.ObjectPtr;
  58.                                                  msg{9}    : I.Msg): e.APTR;
  59. PROCEDURE DoSuperMethod  * {"_a_DoSuperMethodA"}(cl{8}     : I.IClassPtr;
  60.                                                  obj{10}   : I.ObjectPtr;
  61.                                                  msg{9}..  : u.Tag): e.APTR;
  62. PROCEDURE SetSuperAttrs  * {"_a_SetSuperAttrs"}  (cl{8}    : I.IClassPtr;
  63.                                                   obj{10}  : I.ObjectPtr;
  64.                                                   tags{9}..: u.Tag): e.APTR;
  65. PROCEDURE SetSuperAttrsA * {"_a_SetSuperAttrs"}  (cl{8}    : I.IClassPtr;
  66.                                                   obj{10}  : I.ObjectPtr;
  67.                                                   tags{9}  : ARRAY OF u.TagItem): e.APTR;
  68. END Classface.
  69.